package modelo.estados;


import modelo.estados.Cerrada;
import modelo.estados.Finalizada;
import modelo.estados.Pausada;
import modelo.exception.SameStateException;
import modelo.exception.StatusChangeException;
/**
 * 
 * @author Cristian
 *
 */
public class EnTrabajo extends Estado{

	/**
	 * Retorna el estado Cerrada.
	 * @return Estado
	 */
	public Estado cambiarACerrado() {
		return new Cerrada();
	}

	/**
	 * @return Estado
	 * @throws ExceptionStatusChange
	 */
	public Estado cambiarACreado() throws StatusChangeException {
		throw new StatusChangeException("No se puede cambiar al Estado elegido");
	}
	
	/**
	 * @return Estado
	 * @throws ExceptionSameState
	 */
	public Estado cambiarAEnTrabajo() throws SameStateException {
		throw new SameStateException("Mismo Estado");
	}
	
	/**
	 * Retorna el estado Finalizada.
	 * @return Estado
	 */
	public Estado cambiarAFinalizado() {
		return new Finalizada();
	}

	/**
	 * @return Estado
	 * @throws ExceptionStatusChange
	 */
	public Estado cambiarAIniciado() throws StatusChangeException {
		throw new StatusChangeException("No se puede cambiar al Estado elegido");
	}
	
	/**
	 * Retorna el estado Pausada.
	 * @return Estado
	 */
	public Estado cambiarAPausado() {
		return new Pausada();
	}
	
	public boolean estaTrabajando(){
		return true;
	}

	@Override
	public String getNombre() {
		return "En Trabajo";
	}
}
